Skip to content

chore: backfill email-domain member organization dates (CM-1107)#4064

Open
skwowet wants to merge 2 commits intoimprove/CM-1105from
script/CM-1107
Open

chore: backfill email-domain member organization dates (CM-1107)#4064
skwowet wants to merge 2 commits intoimprove/CM-1105from
script/CM-1107

Conversation

@skwowet
Copy link
Copy Markdown
Collaborator

@skwowet skwowet commented Apr 28, 2026

Summary

Adds a one-off backfill script for existing email-domain member organization rows with missing dates.

The script:

  • Finds active email-domain member organizations where dateStart and dateEnd are null.
  • Uses verified email identities and activityRelations.memberId/platform/username to find activity-date evidence.
  • Reuses the stint inference logic to apply date ranges.
  • Queues changed members in Redis for affiliation recalculation.

Note

Medium Risk
Runs data backfills that mutate memberOrganizations rows and changes the Redis key used to enqueue/dequeue affiliation recalculation, which could impact downstream processing if any consumers still expect the old key.

Overview
Adds a new backfill script (backfill-email-domain-member-organization-dates.ts) and npm entry to find email-domain memberOrganizations with null dateStart/dateEnd, infer stint date ranges from verified email + activity evidence, and apply inserts/updates in a transaction before queuing members for affiliation recalculation.

Extends the data-access layer with queries to (1) batch memberIds missing dates and (2) derive per-org activity dates via joins across organizationIdentities, memberIdentities, and activityRelations, plus a new EmailDomainMemberOrganizationActivityDate type.

Unifies the Redis set used for affiliation-recalc batching by switching the script-executor worker from queue:recalculate:members:affiliation to recalculate-member-affiliations.

Reviewed by Cursor Bugbot for commit f834a6b. Bugbot is set up for automated code reviews on this repo. Configure here.

@skwowet skwowet self-assigned this Apr 28, 2026
Copilot AI review requested due to automatic review settings April 28, 2026 13:06
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a one-off backfill script to infer and persist missing dateStart/dateEnd for existing email-domain memberOrganizations, using activity evidence and existing stint-inference logic, and queues affected members for affiliation recalculation.

Changes:

  • Add DAL query helpers + types to find email-domain member orgs missing dates and derive per-org activity dates.
  • Add a backend script to run the backfill in batches and enqueue impacted members in Redis.
  • Rename the Redis set key used by the script executor worker workflow that recalculates member affiliations.

Reviewed changes

Copilot reviewed 4 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
services/libs/data-access-layer/src/members/types.ts Adds a typed result shape for email-domain org activity date rows.
services/libs/data-access-layer/src/members/organizations.ts Adds queries for (1) memberIds with undated email-domain orgs and (2) org activity dates for stint inference.
services/apps/script_executor_worker/src/activities/block-project-organization-affiliations.ts Renames the Redis set key used to queue/pop members for affiliation recalculation.
backend/src/bin/scripts/backfill-email-domain-member-organization-dates.ts New one-off backfill script: batch processing, stint inference, DB updates/inserts, Redis enqueue.
backend/package.json Adds an npm script entry to run the new backfill script.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@skwowet skwowet force-pushed the improve/CM-1105 branch 2 times, most recently from 4f9f391 to 68a79fc Compare April 28, 2026 13:41
Signed-off-by: Yeganathan S <63534555+skwowet@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 29, 2026 16:33
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 5 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

export async function markMemberForAffiliationRecalc(memberIds: string[]): Promise<void> {
try {
await svc.redis.sAdd('queue:recalculate:members:affiliation', memberIds)
await svc.redis.sAdd('recalculate-member-affiliations', memberIds)
Copy link

Copilot AI Apr 29, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This changes the Redis set key used for the affiliation-recalc queue. If there are any members already enqueued under the previous key, they will no longer be processed after this deploy.

Consider supporting both keys temporarily (e.g., drain old -> new), or document/run a one-time migration to move existing set members so no queued work is lost.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants